home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
os2
/
adaptor.zip
/
ADAPT.ZIP
/
adaptor
/
examples
/
purdue
/
prob08ol.fcm
< prev
next >
Wrap
Text File
|
1993-06-26
|
2KB
|
85 lines
PROGRAM PROB08
C
C PROBLEM 08
C
C REFERENCE: PROBLEMS TO TEST PARALLEL AND VECTOR LANGUAGES
C CSD-TR 516, COMPUTER SCIENCE, PURDUE UNIVERSITY
C JOHN R. RICE, MAY 1, 1985
C
C REVISED BY JOHN R. RICE AND J. JING, OCT. 1, 1990
C
C
C *************************************************
C * Adapted for FORTRAN D benchmarking *
C * by T. HAUPT (haupt@sccs.npac.syr.edu) *
C * *
C * Northeast Parallel Architectures Center *
C * at Syracuse University, Syracuse, NY, USA *
C *************************************************
C
C
C VERSION SIMD/CM2-1.00
C ==================================================
C
INCLUDE '/usr/include/cm/paris-configuration-fort.h'
INTEGER KASES,NK,MK
PARAMETER (KASES=4)
INTEGER N(KASES),M(KASES)
cmf$ layout N(:serial)
cmf$ layout M(:serial)
DATA N / 8192,65536,131072,65536/
DATA M /3,4,4,8/
REAL SUMD
DO 50 K = 1, KASES
CALL CM_TIMER_CLEAR(0)
CALL CM_TIMER_START(0)
DO MANY=1,150
NK=N(K)
MK=M(K)
CALL DOIT(NK,MK,SUMD)
ENDDO
CALL CM_TIMER_STOP(0)
PRINT *,'PROBLEM 08 WITH N,M =',NK,MK
PRINT *,'GIVES SUM OF DIFFERENCES = ',SUMD
CALL CM_TIMER_PRINT(0)
50 CONTINUE
STOP
END
SUBROUTINE DOIT(NK,MK,SUMD)
INTEGER NK,MK
REAL SUMD
INTEGER J,N
REAL, ARRAY(NK) :: X, X1
REAL, ARRAY(MK,NK) :: DIFF
REAL, ARRAY(NK) :: DIFF_ROW
CMF$ LAYOUT DIFF(:SERIAL,:NEWS)
X=0.2*[1:NK]+0.01*COS(REAL([1:NK]))
DIFF=0
c DIFF(1,1:NK)=SIN(X)
DIFF(1,1:NK)=SIN(X(1:NK))
N=NK
DO J=2,MK
N=N-1
C=0
DIFF_ROW (1:N+1) = DIFF(J-1,1:N+1)
DIFF_ROW (1:N) = DIFF_ROW (2:N+1) - DIFF_ROW (1:N)
X1 (1:N) = X(J:N+J-1)
X1 (1:N) = X1 (1:N) - X(1:N)
DIFF(J,1:N)=DIFF_ROW (1:N) / X1(1:N)
ENDDO
SUMD=SUM(DIFF(2:MK,1:NK))
END